home *** CD-ROM | disk | FTP | other *** search
/ BBS Toolkit / BBS Toolkit.iso / rbbs_pc / usemall.zip / USEMALL.BAS < prev    next >
BASIC Source File  |  1988-03-02  |  7KB  |  242 lines

  1.  
  2. DIM ARG$(10)
  3. CLINE$= COMMAND$
  4.  
  5. PRINT"  ╔═════════════════════════════════════════════════════╗
  6. PRINT"  ║    Use `em ALL -- USEMALL.EXE -- a quick utility    ║
  7. PRINT"  ║      to run PCBoard DOORS under any version of      ║
  8. PRINT"  ║        RBBS that creates a DORINFOx.DEF file        ║
  9. PRINT"  ║              [RBBS15.1c and above]                  ║
  10. PRINT"  ║                                                     ║
  11. PRINT"  ║  3 [OPTIONAL] parameters on command line:           ║
  12. PRINT"  ║                                                     ║
  13. PRINT"  ║    param 1 -- node # -- IF NOT USED, "1" assumed    ║
  14. PRINT"  ║    param 2 -- FULL PATH/FILENAME for MESSAGES       ║
  15. PRINT"  ║               if not specified, then MESSAGES is    ║
  16. PRINT"  ║               assumed as file name, in current      ║
  17. PRINT"  ║               directory. TO SPECIFY PARAM 2, PARAM  ║
  18. PRINT"  ║               #1 MUST ALSO BE SPECIFIED             ║
  19. PRINT"  ║    param 3 -- TIME ALLOWED IN DOOR.  IF NOT         ║
  20. PRINT"  ║               SPECIFIED, default is 30 minutes.     ║
  21. PRINT"  ║               TO SPECIFY PARAM 3, PARAMs #1 & 2     ║
  22. PRINT"  ║               MUST ALSO BE SPECIFIED - see docs     ║
  23. PRINT"  ║                                                     ║
  24. PRINT"  ║     a PHIL DeWITT & STEVEN KLING production         ║
  25. PRINT"  ╚═════════════════════════════════════════════════════╝
  26.  
  27.  
  28. ' DORINFOx.DEF is required in the current directory
  29. '
  30. '
  31. ' The program (if successful) will create PCBOARD.SYS and PCBOARD.DAT
  32. ' in the current directory - user must then copy to where-ever needed.
  33. '
  34. ' If user exited towards door, while connected EVEN parity, program
  35. '   will NOT create either file - batch file can then test for their
  36. '   existence for either return to RBBS (user will have been told the
  37. '   problem) or may continue on. For example:
  38. '
  39. '       IF EXIST PCBOARD.SYS DELETE PCBOARD.SYS
  40. '       USEMALL %1 C:\RBBS\JUNK\MESSAGES -10
  41. '       IF EXIST PCBOARD.SYS GOTO OK
  42. '       GOTO END
  43. '       :OK
  44. '       (whatever it takes to copy files, move to new dir, etc.)
  45. '       :END
  46. '
  47. '
  48. ' If no command line arguments, then defaults are:
  49. '   node 1
  50. '   MESSAGES (or a useable portion of it) in current directory
  51. '   Time allowed in door = 30 minutes
  52. '
  53. ' If time allowed is specified as 0 (zero) then time allowed
  54. '   will be equal to time remaining
  55. '
  56. ' If time allowed is specified as a NEGATIVE number, then time
  57. '   allowed will be set to time remaining or parameter #3, if
  58. '   greater [when converted to positive #].  Thus, you could
  59. '   allow someone into a door giving them [say] 10 minutes, even
  60. '   though they only had 3 minutes left when exiting from RBBS.
  61.  
  62.  
  63.  
  64. IF LEN(CLINE$)<1 THEN
  65.     RD$="1"
  66.     NODE.RECORD.IN.MESSAGES.FILE=2
  67.     MESSAGE.FILE$="MESSAGES"
  68.     TIME.TO.PLAY=30
  69.     GOTO 2
  70. END IF
  71.  
  72. I=1:NUM=1:INWORD=-1:LENGTH=LEN(CLINE$)
  73. WHILE I <= LENGTH
  74.     CH$=MID$(CLINE$,I,1)
  75.     IF CH$<>" " THEN
  76.         IF NOT INWORD THEN INWORD=-1
  77.         ARG$(NUM)=ARG$(NUM)+CH$
  78.     ELSEIF INWORD THEN
  79.         NUM=NUM+1
  80.         INWORD=FALSE
  81.     END IF
  82.     I=I+1
  83. WEND
  84.  
  85. IF NUM>3 THEN
  86.     PRINT "ERROR IN COMMAND LINE - TOO MANY ARGUMENTS"
  87.     END
  88. END IF
  89.  
  90. RD$=ARG$(1)
  91. IF LEN(RD$)>1 OR VAL(RD$)>9 OR VAL(RD$)<0 THEN
  92.     PRINT "ERROR IN COMMAND LINE - ARGUMENT 1 [NODE #] OUT OF RANGE"
  93.     END
  94. END IF
  95. RD=VAL(RD$): IF RD=0 THEN RD=10
  96. NODE.RECORD.IN.MESSAGES.FILE=RD+1
  97.  
  98. IF NUM>1 THEN MESSAGE.FILE$=ARG$(2)
  99. IF NUM=3 THEN TIME.TO.PLAY=VAL(ARG$(3))
  100.  
  101.  
  102. 2 OPEN MESSAGE.FILE$ FOR RANDOM AS #1 LEN = 128
  103.   FIELD 1, 128 AS Z$
  104.      GET 1, NODE.RECORD.IN.MESSAGES.FILE
  105.      PAGEBEL = VAL(MID$(Z$, 34, 2))
  106.      SYSOP.NEXT = VAL(MID$(Z$, 36, 2))
  107.      PRINTER = VAL(MID$(Z$, 38, 2))
  108.      RELIABLE.MODE = VAL(MID$(Z$, 91, 2))
  109.      E.T.D = VAL(MID$(Z$, 86, 5))
  110.      GRP = VAL(MID$(Z$, 53, 2))
  111.      SNOOP = VAL(MID$(Z$, 58, 2))
  112.      CLOSE 1
  113.  
  114.  
  115.  
  116.   OPEN "DORINFO" + RD$ + ".DEF" FOR INPUT AS #2
  117.     LINE INPUT #2,RBBS.NAME$
  118.     LINE INPUT #2,SYSOP.FIRST$
  119.     LINE INPUT #2,SYSOP.LAST$
  120.     LINE INPUT #2,COM.PORT$
  121.     LINE INPUT #2,BAUD.PARITY$
  122.     LINE INPUT #2,NETWORK.TYPE$
  123.     LINE INPUT #2,FIRST$
  124.     LINE INPUT #2,LAST$
  125.     LINE INPUT #2,CITY.STATE$
  126.     LINE INPUT #2,GR$
  127.     LINE INPUT #2,SECURITY$
  128.     LINE INPUT #2,TIME.REMAINING$
  129.     CLOSE 2
  130.     GR = VAL(GR$)
  131.     GRAPHICS$="0 ":IF GR=2 THEN GRAPHICS$="-1"
  132.     TIME.REMAINING! = VAL(TIME.REMAINING$)
  133.     SECURITY = VAL(SECURITY$)
  134.     BAUD.PARITY$=BAUD.PARITY$+"    "
  135.     BAUD$=LEFT$(BAUD.PARITY$,4)
  136.     IF VAL(BAUD$)<300 THEN BAUD$="LOCA"
  137.     USER.NAME$=FIRST$+" "+LAST$+ "  "
  138.     IF LEN(USER.NAME$)>27 THEN USER.NAME$=LEFT$(USER.NAME$,25)+"  "
  139.     IF INSTR(BAUD.PARITY$,",") THEN
  140.         PARITY$=RIGHT$(BAUD.PARITY$,10)
  141.         PARITY$=LEFT$(PARITY$,6)         ' TAKING ADDED SPACES OUT
  142.     END IF
  143.     NETWORK.TYPE = VAL(NETWORK.TYPE$)
  144.     TIME.REMAINING! = TIME.REMAINING * 60
  145.  
  146.     IF INSTR(PARITY$, "E") THEN
  147.        LN$ = "You must set your modem parameters at N-8-1 to access this door!"
  148.        PRINT LN$
  149.        OPEN COM.PORT$+":"+BAUD$+PARITY$+",CS,DS,CD" FOR RANDOM AS #3
  150.        PRINT #3, LN$
  151.        CLOSE
  152.        END
  153.     END IF
  154.  
  155.  
  156.     OPEN  "PCBOARD.SYS" FOR RANDOM AS #4 LEN = 128
  157.     FIELD #4,         2 AS DISPLAY.ON.OR.OFF.RBBS.SNOOP$, _
  158.               2 AS PRINTER.ON.OR.OFF$, _
  159.               2 AS PAGE.BELL.ON.OR.OFF$, _
  160.               2 AS CALRAMF$, _
  161.               2 AS SYSNXTF$, _
  162.               4 AS CONNECT.RATE.OF.CALLER$, _
  163.              27 AS NAME.OF.CALLER$, _
  164.              15 AS FIRSTF$, _
  165.               2 AS GRAPHF$, _
  166.              12 AS PWFILLF$, _
  167.               2 AS RECNOF$, _
  168.               4 AS WHEN.LOGGED.ON.SET.TO.NOW$, _
  169.               4 AS ALLOWED.TIME.FOR.USER.IN.DOOR$, _
  170.               4 AS TIME.USER.ENTERED.DOOR.SET.TO.NOW$, _
  171.               5 AS TIME.USER.ENTERED.DOOR.HH.MM.FORMAT$, _
  172.               2 AS UCCONFF$, _
  173.              18 AS CONFLGF$, _
  174.               2 AS UCATMINF$, _
  175.               8 AS DLBYTEF$, _
  176.               2 AS UUTCMINF$, _
  177.               4 AS LNGVERSF$, _
  178.               2 AS ECMODEMF$, _
  179.               1 AS NCHTPXF$
  180.     GET #4, 1
  181.     LSET DISPLAY.ON.OR.OFF.RBBS.SNOOP$ = STR$(SNOOP)
  182.     LSET PRINTER.ON.OR.OFF$ = STR$(PRINTER)
  183.     LSET PAGE.BELL.ON.OR.OFF$ = STR$(PAGEBEL)
  184.     LSET CALRAMF$ = STR$(0)
  185.     LSET SYSNXTF$ = STR$(SYSOP.NEXT)
  186.     LSET CONNECT.RATE.OF.CALLER$ = BAUD$
  187.     LSET NAME.OF.CALLER$ = USER.NAME$
  188.     LSET FIRSTF$ = FIRST$
  189.     LSET GRAPHF$ = GRAPHICS$
  190.     LSET PWFILLF$ = SPACE$(12)
  191.     LSET RECNOF$ = MKI$(2)
  192.     CURRENT.SEC = TIMER
  193.     LSET WHEN.LOGGED.ON.SET.TO.NOW$ = MKS$(CURRENT.SEC)
  194.       IF TIME.TO.PLAY=0 THEN PLAYING.TIME=TIME.REMAINING!
  195.       IF TIME.TO.PLAY<0 THEN
  196.         TIME.TO.PLAY = TIME.TO.PLAY * -60.
  197.         IF TIME.TO.PLAY < TIME.REMAINING! THEN TIME.TO.PLAY=TIME.REMAINING!
  198.         PLAYING.TIME=TIME.TO.PLAY
  199.         TIME.TO.PLAY=0
  200.       END IF
  201.       IF TIME.TO.PLAY>0 THEN PLAYING.TIME=TIME.TO.PLAY*60.
  202.  
  203.     LSET ALLOWED.TIME.FOR.USER.IN.DOOR$ = MKS$(PLAYING.TIME)
  204.     LSET TIME.USER.ENTERED.DOOR.SET.TO.NOW$ = MKS$(CURRENT.SEC)
  205.     LSET TIME.USER.ENTERED.DOOR.HH.MM.FORMAT$ = LEFT$(TIME$, 5)
  206.     LSET UCCONFF$ = MKI$(0)
  207.     LSET CONFLGF$ = SPACE$(18)
  208.     LSET UCATMINF$ = MKI$(0)
  209.     LSET DLBYTEF$ = SPACE$(8)
  210.     LSET UUTCMINF$ = MKI$(0)
  211.     LSET LNGVERSF$ = SPACE$(4)
  212.     LSET ECMODEMF$ = STR$(RELIABLE.MODE)
  213.     LSET NCHTPXF$ = " "
  214.     PUT #4, 1
  215.     CLOSE #4
  216.  
  217.  
  218.     OPEN  "PCBOARD.DAT" FOR OUTPUT AS #4
  219.     PRINT #4, "  *** A DUMB REMARK LINE ***  "
  220.     FOR PCBLINES = 1 TO 20
  221.     PRINT #4, "Z,";
  222.     NEXT
  223.     PRINT #4,"USERS,";
  224.     FOR PCBLINES  = 1 TO 13
  225.     PRINT #4,"Z,";
  226.     NEXT
  227.     PRINT #4, ".\,";
  228.     FOR PCBLINES = 1 TO 7
  229.     PRINT #4, "Z,";
  230.     NEXT
  231.     PRINT #4, COM.PORT$;",";
  232.     IF VAL(BAUD$)<300 THEN BAUD$="2400"
  233.     PRINT #4, BAUD$;",";
  234.     FOR PCBLINES = 1 TO 49
  235.     PRINT #4, "Z,";
  236.     NEXT
  237.     PRINT #4, RD$+",Zend"
  238.     CLOSE
  239.     END
  240.  
  241.  
  242.